#define _CRT_SECURE_NO_WARNINGS 1


//#include <stdio.h>
//#include <stdlib.h>
//
//typedef struct libos
//{
//	int v;
//	struct libos* next;
//	struct libos* pre;
//}libo;
//
//libo* CreNd(int i)
//{
//	libo* p = (libo*)malloc(sizeof(libo));
//	if (p == NULL)
//	{
//		perror("malloc");
//		return 0;
//	}
//	p->next = NULL;
//	p->pre = NULL;
//	p->v = i;
//	return p;
//}
//
//int huanxin(libo* pl,int n, int m)
//{
//	assert(pl);
//	libo* tmp = pl;
//	
//	for (int i = 2; i <= n; i++)
//	{
//		libo* cur = CreNd(i);
//		tmp->next = cur;
//		cur->pre = tmp;
//		tmp = cur;
//
//	}
//	tmp->next = pl;
//	pl->pre = tmp;
//	libo* tmp1 = pl;
//	int c1 = 0;
//	int c = 1;
//	while (c1 - (n - 2) < 0)
//	{
//		
//		while (c - m)
//		{
//			tmp1 = tmp1->next;
//			c++;
//		}
//		c = 0;
//		c1++;
//		tmp1->pre->next = tmp1->next;
//		tmp1->next->pre = tmp1->pre;
//	}
//	int b = 0;
//	while (b - m)
//	{
//		tmp1 = tmp1->next;
//		b++;
//	}
//	return tmp1->next->v;
//}
//
//int main()
//{
//	libo* lb;
//	int n, m;
//	scanf("%d %d", &n, &m);
//	lb = (libo*)malloc(sizeof(libo));
//	if (lb == NULL)
//	{
//		perror("malloc");
//		return 0;
//	}
//	lb->v = 1;
//	lb->next = NULL;
//	lb->pre = NULL;
//	printf("%d", huanxin(lb, n, m));
//	return 0;
//}